package LeeJS;

import java.util.Scanner;

public class J14_Array {
	
	/*
			
			배열 array
			지금까지 우리가 사용한 변수는 하나의 저장공간에
			하나의 이름으로 하나의 값 만을 저장했음 만일, 데이터 건수가 여러 개인 경우
			변수도 여러개 선언 해서 사용 해야 함
			학생 1명의 성적처리 변수 7개 사용
			학생 10명의 성적처리 변수 7 * 10개 사용
			이렇게 하면 작성해야 하는 코드도 많아지고
			반복문 사용도 힘들어 짐
			
			그래서 자바에서는 동일한 자료형의 객체나 
			기본 자료형을 묶어서 group 배열로 사용 할 수 있음
			
			배열에 속하는 각 개체는 "배열의 구성요소"라고 함
			배열에서 구성요소의 갯수를 알아낼려면 length 필드를 이용
			배열의 각 구성요소에 값을 저장하거나 읽기 위해
			접근하려면 index(위치)를 지정해야 함
			배열의 index 는  0부터 시작함
			배열은 일단 크기가 정해지면 변경 불가
			
	 */
	
	public static void main(String[] args) {
		
		//배열을 사용하지 않은 성적처리 프로그램
		/*
		int stu1 = 123456789;
		int kor1 = 98;
		int eng1 = 99;
		int mat1 = 98;
		
		int stu2 = 12345678;
		int kor2 = 98;
		int eng2 = 99;
		int mat2 = 98;
		
		int stu3 = 1234567;
		int kor3 = 98;
		int eng3 = 99;
		int mat3 = 98;
		
		int tot1 = kor1 + eng1 + mat1;
		int tot2 = kor2 + eng2 + mat2;
		int tot3 = kor3 + eng3 + mat3;
		
		//배열을 사용한 성적처리 프로그램
		
		int[] stdno = new int[3];		//3명분의 학생번호 저장
		int kor[] = new int[3];
		int[] eng = new int[3];
		int mat[] = new int[3];
		int tot[] = new int[3];
		int avg[] = new int[3];
		
		stdno[0] = 1234567890;
		stdno[1] = 123457890;
		stdno[2] = 1234579;
		
		System.out.println(stdno);
		System.out.println(stdno[0]);
		System.out.println(stdno[1]);
		System.out.println(stdno[2]);
		
		kor[0] = 78;
		kor[1] = 98;
		kor[2] = 82;
		
		eng[0] = 87;
		eng[1] = 45;
		eng[2] = 98;
		
		mat[0] = 100;
		mat[1] = 98;
		mat[2] = 87;
		
		tot[0] = kor[0] + eng[0] + mat[0];
		tot[1] = kor[1] + eng[1] + mat[1];
		tot[2] = kor[2] + eng[2] + mat[2];
		
		avg[0] = tot[0] / 3;
		avg[1] = tot[1] / 3;
		avg[2] = tot[2] / 3;
		
		
		for(int i = 0; i <= 2; ++i){
			tot[i] = kor[i] + eng[i] + mat[i];
			avg[i] = tot[i] / 3;
		}
		
		System.out.println(kor);
		System.out.println(kor[0]);
		System.out.println(kor[1]);
		System.out.println(kor[2]);
		
		System.out.println(eng);
		System.out.println(eng[0]);
		System.out.println(eng[1]);
		System.out.println(eng[2]);
		
		System.out.println(mat);
		System.out.println(mat[0]);
		System.out.println(mat[1]);
		System.out.println(mat[2]);
		
		System.out.println(tot);
		System.out.println(tot[0]);
		System.out.println(tot[1]);
		System.out.println(tot[2]);
		
		System.out.println(avg);
		System.out.println(avg[0]);
		System.out.println(avg[1]);
		System.out.println(avg[2]);
		
		*/
		//문제 1 :복권 추첨을 위한 난수 6개 만들어 myLotto 라는 배열에 저장하고 모두 출력
		//로또 6/45에 근거해서 1~45 범위 내 난수 사용
		
		/*
		내가 직접 짜다만 프로그래밍
		int myLotto[] = new int[6];
		for(int i = 0; i <= 5; ++i){
			myLotto[i] = (int)(Math.random() * 45) + 1;
		}
		
		System.out.println("" + myLotto[0]+ " " + myLotto[1]+ " " + 
				myLotto[2] + " " + myLotto[3] + " " + myLotto[4] + " " + myLotto[5]);
		
		Scanner sc = new Scanner(System.in);
		
		int a[] = new int[6];
		for(int p = 0; p <= 5; ++p){
			a[p] = sc.nextInt();
		}
		
		*/
		
		/*
		교수님이 짜주신 프로그래밍
		int myLotto[] = new int[6];
		for(int i = 0; i < 6; ++i){
			
		myLotto[i] = (int)(Math.random() * 45) + 1;
		System.out.print(myLotto[i]);
		
		}
		*/
		
		//배열 선언 및 값 초기화
		char grade[] = {'수', '우', '미', '양', '가'};
		//char[] grade = new char[5];
		//= new char[1] = '수';.....
		System.out.println(grade.length);
		//JDK 5이전 방법
		for(int i = 0; i < grade.length; ++i)
			System.out.println(grade[i]);
		
		/*
				
				Iteration on Array
				JDK5 이전에서는 for 문과 배열의  index 를 이용해서 배열의 값을 출력했음
				JDK5 이상에서는 for 문이 향상되었음 즉, 배열의 index 없이 배열을 반복처리 가능
				for(배열의 구성요소 자료형 변수형 : 배열명)
				
		 */
		
		int stdno[] = new int[6];
		int kor[] = new int[6];
		int eng[] = new int[6];
		int mat[] = new int[6];
		int myLotto[] = new int[6];
		
		for(char s : grade)
			System.out.println(s);
		
		//stdno
		for(int ss : stdno)
			System.out.println(ss);
		//kor
		for(int ee : kor)
			System.out.println(ee);
		//eng
		for(int ff : eng)
			System.out.println(ff);
		//mat
		for(int gg : mat)
			System.out.println(gg);
		//myLotto
		for(int hh : myLotto)
			System.out.println(hh);
	}

}